package com.hkemmm.utlis;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

public class Myutils {
    /**
     * 文件上传你存储
     *
     * @param multipartFile
     * @param strUploadfiles      存储目录
     * @param strFileNamePrefix   文件前缀统一名
     * @param objBean             保存文件路径的实体类
     * @param beanFilePropetyName   保存文件实体类属性名
     */
    public static void doSingleFileUpload(MultipartFile multipartFile, String strUploadfiles, String strFileNamePrefix, Object objBean, String beanFilePropetyName) {

        ////////////////////////////////创建文件存放目录////////////////////////////////
        //获取服务器绝对路径
        String strBasePath = System.getProperty("server.basePath");

        //文件存放目录
        String strFileDiretoryPath = strBasePath + "static" + File.separator + strUploadfiles + File.separator;
        File uploadDiretory = new File(strFileDiretoryPath);
        if (!uploadDiretory.exists()) {
            uploadDiretory.mkdirs();
        }

        ///////////////////////////////文件重命名///////////////////////////////////////
        //原文件名
        String strOriginalFilename = multipartFile.getOriginalFilename();
        //文件名后缀
        String strFileSufix = StringUtils.substringAfterLast(strOriginalFilename, ".");
        //使用UUID（防止文件名重复）生成新文件名
        String strNewFilename = strFileNamePrefix + UUID.randomUUID().toString() + "." + strFileSufix;
        //新文件所在绝对路径
        String strNewFilePath = strFileDiretoryPath + strNewFilename;
        File newFilePath = new File(strNewFilePath);

        //System.out.println(strNewFilePath);

        ///////////////////////////////////文件转存//////////////////////////////////////
        try {
            //文件存入文件对象中
            multipartFile.transferTo(newFilePath);

            //实体类属性存入文件相对路径
            BeanUtils.setProperty(objBean, beanFilePropetyName,
                    "static" + File.separator + strUploadfiles + File.separator + strNewFilename);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
